# -*- coding: utf-8 -*-

"""
@author: bw
@contact: bw@handsdriver.net
"""

import funcy as F
import apipkg


apipkg.initpkg(__name__,
	F.merge({path.split(':')[1]: path for path in [
	'zope.interface.common.mapping:IEnumerableMapping',
	'zope.interface.common.mapping:IFullMapping',
	'zope.interface.common.mapping:IItemMapping',
	'zope.interface.common.mapping:IIterableMapping',
	'zope.interface.common.mapping:IReadMapping',
	'zope.interface.common.mapping:IMapping',
	'zope.interface.common.sequence:IMinimalSequence',
	'zope.interface.common.sequence:IFiniteSequence',
	'zope.interface.common.sequence:IReadSequence',
	'zope.interface.common.sequence:IExtendedReadSequence',
	'zope.interface.common.sequence:IWriteSequence',
	'zope.interface:Interface',
	'zope.interface:Invalid',
	'zope.interface:implementer',
	'zope.interface:implementer_only',
	'zope.interface:implementedBy',
	'zope.interface:providedBy',
	'zope.interface:provider',
	'zope.interface:classImplements',
	'zope.interface:directlyProvides',
	'zope.interface:alsoProvides',
	'zope.interface:noLongerProvides',
	'zope.interface:moduleProvides',
	'zope.interface:Attribute',
	'zope.interface.interface:InterfaceClass',
	'zope.interface.interfaces:IElement',
	'zope.interface.interfaces:IAttribute',
	'zope.interface.interfaces:IMethod',
	'zope.interface.interfaces:ComponentLookupError',
	'zope.interface.interfaces:IObjectEvent',
	'zope.interface.interfaces:ObjectEvent',
	'zope.interface.interfaces:IComponentLookup',
	'zope.interface.interfaces:IComponentRegistry',
	'zope.interface.interfaces:IComponents',
	'zope.interface.interfaces:IRegistered',
	'zope.interface.interfaces:IUnregistered',
	'zope.component:adapter',
	'zope.component:adapts',
	'zope.component:getGlobalSiteManager',
	'zope.component:getSiteManager',
	'zope.component:queryUtility',
	'zope.component:getUtility',
	'zope.component:getUtilitiesFor',
	'zope.component:getAllUtilitiesRegisteredFor',
	'zope.component:getAdapter',
	'zope.component:getAdapters',
	'zope.component:getMultiAdapter',
	'zope.component:queryAdapter',
	'zope.component:queryMultiAdapter',
	'zope.component:provideUtility',
	'zope.component:provideAdapter',
	'zope.component:provideSubscriptionAdapter',
	'zope.component:provideHandler',
	'zope.component:subscribers',
	'zope.component.hooks:getSite',
	'zope.component.hooks:setSite',
	'zope.component.hooks:setHooks',
	'zope.component.interface:queryInterface',
	'zope.component.interfaces:IComponents',
	'zope.component.interfaces:ISite',
	'zope.event:notify',

	'zope.configuration.xmlconfig:ConfigurationMachine',
	'zope.configuration.xmlconfig:registerCommonDirectives',
	'zope.configuration.exceptions:ConfigurationError',

#	'zope.annotation.interfaces:IAnnotations',
#	'zope.annotation.interfaces:IAnnotatable',
#	'zope.annotation.interfaces:IAttributeAnnotatable',

	'zope.location.location:locate',
	'zope.location.location:located',
	'zope.location.location:Location',
	'zope.location.interfaces:ILocation',
	'zope.location.interfaces:ILocationInfo',
	'zope.location.interfaces:ISublocations',
	'zope.location.interfaces:IContained',
	'zope.location.interfaces:IRoot',

	'zope.lifecycleevent:added',
	'zope.lifecycleevent:created',
	'zope.lifecycleevent:modified',
	'zope.lifecycleevent:moved',
	'zope.lifecycleevent:removed',
	'zope.lifecycleevent:Attributes',
	'zope.lifecycleevent:IObjectCreatedEvent',
	'zope.lifecycleevent:IObjectMovedEvent',
	'zope.lifecycleevent:IObjectAddedEvent',
	'zope.lifecycleevent:IObjectModifiedEvent',
	'zope.lifecycleevent:IObjectRemovedEvent',
#	'zope.processlifetime:IDatabaseOpened',
#	'zope.processlifetime:IDatabaseOpenedWithRoot',
#	'zope.processlifetime:IProcessStarting',
#	'zope.processlifetime:DatabaseOpened',
#	'zope.processlifetime:DatabaseOpenedWithRoot',
#	'zope.processlifetime:ProcessStarting',

	'zope.schema.fieldproperty:FieldProperty',
	'zope.schema.fieldproperty:FieldUpdatedEvent',
	'zope.schema:getValidationErrors',
	'zope.schema.interfaces:ValidationError',
	'zope.schema.interfaces:WrongContainedType',
	'zope.schema.interfaces:IField',
	'zope.schema.interfaces:IFieldUpdatedEvent',
	'zope.schema.interfaces:IVocabularyFactory',
	'zope.schema.interfaces:IVocabularyTokenized',
	'zope.schema.interfaces:ITitledTokenizedTerm',
	'zope.schema.vocabulary:getVocabularyRegistry',
	'zope.schema.vocabulary:SimpleTerm',
	'zope.schema.vocabulary:SimpleVocabulary',

	'zope.proxy:getProxiedObject',
	'zope.proxy:removeAllProxies',
	'zope.proxy:non_overridable',
	'zope.security.checker:canAccess',
	'zope.security.checker:canWrite',
	'zope.security.checker:Checker',
	'zope.security.checker:CheckerPublic',
	'zope.security.checker:NamesChecker',
	'zope.security.checker:defineChecker',
	'zope.security.interfaces:IParticipation',
	'zope.security.interfaces:ForbiddenAttribute',
	'zope.security.management:newInteraction',
	'zope.security.management:endInteraction',
	'zope.security.management:getInteraction',
	'zope.security.management:restoreInteraction',
	'zope.security.management:system_user',
	'zope.security.proxy:ProxyFactory',
	'zope.security.proxy:removeSecurityProxy',
]}, {
#	'lazyproperty'  : 'zope.cachedescriptors.property:Lazy',
#	'cachedproperty': 'zope.cachedescriptors.property:CachedProperty',

	'xmlconfig': 'zope.configuration.xmlconfig',

	'configuration': F.merge({path.split(':')[1]: path for path in [
		'zope.configuration.fields:PythonIdentifier',
		'zope.configuration.fields:GlobalObject',
		'zope.configuration.fields:GlobalInterface',
		'zope.configuration.fields:Tokens',
		'zope.configuration.fields:Path',
		'zope.configuration.fields:Bool',
		'zope.configuration.fields:MessageID',
	]}),

	'annotation': F.merge({path.split(':')[1]: path for path in [
		'zope.annotation:factory',
		'zope.annotation.interfaces:IAnnotations',
		'zope.annotation.interfaces:IAttributeAnnotatable',
	]}),

	'schema': F.merge({path.split(':')[1]: path for path in [
		'zope.schema:getFieldsInOrder',

		'zope.schema.interfaces:IField',
		'zope.schema.interfaces:IDate',
		'zope.schema.interfaces:IDatetime',
		'zope.schema.interfaces:IObject',
		'zope.schema.interfaces:IIterable',
		'zope.schema.interfaces:IChoice',
		'zope.schema.interfaces:ICollection',
		'zope.schema.interfaces:IContainer',
		'zope.schema.interfaces:IUnorderedCollection',
		'zope.schema.interfaces:ISequence',
		'zope.schema.interfaces:ITuple',
		'zope.schema.interfaces:IList',
		'zope.schema.interfaces:IAbstractSet',
		'zope.schema.interfaces:ISet',
		'zope.schema.interfaces:IFrozenSet',

		'zope.schema:ASCIILine',
		'zope.schema:Bool',
		'zope.schema:Choice',
		'zope.schema:Date',
		'zope.schema:Datetime',
		'zope.schema:Decimal',
		'zope.schema:Dict',
		'zope.schema:DottedName',
		'zope.schema:Field',
		'zope.schema:Float',
		'zope.schema:FrozenSet',
		'zope.schema:Id',
		'zope.schema:Int',
		'zope.schema:InterfaceField',
		'zope.schema:List',
		'zope.schema:Object',
		'zope.schema:Set',
		'zope.schema:Text',
		'zope.schema:TextLine',
		'zope.schema:Tuple',
		'zope.schema:URI',
	]}),
}))
